diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py
index 8d19872bea..a43e4d5b7e 100644
--- a/django/db/backends/postgresql/operations.py
+++ b/django/db/backends/postgresql/operations.py
@@ -44,10 +44,10 @@ class DatabaseOperations(BaseDatabaseOperations):
         return "DATE_TRUNC('%s', %s)" % (lookup_type, field_name)
 
     def _prepare_tzname_delta(self, tzname):
-        if '+' in tzname:
-            return tzname.replace('+', '-')
-        elif '-' in tzname:
-            return tzname.replace('-', '+')
+        if tzname.startswith('Etc/GMT'):
+            sign = '-' if '+' in tzname else '+'
+            offset = tzname.split('GMT')[1]
+            return f'{sign}{offset}'
         return tzname
 
     def _convert_field_to_tz(self, field_name, tzname):
